package student.aistar.day13;

import java.io.File;
import java.io.IOException;

public class FileDemo {
    public static void main(String[] args) {
        //绝对路径
        //创建文件
        //createNewFile("src/student/aistar/a.txt");

        //删除文件
        //deleteFileOrFile("src/student/aistar/a.txt");

        //lists("src/student/aistar");
        listsFilter("src/student/aistar");
    }

    /**
     * 创建文件
     * @param path
     */
    private static void createNewFile(String path) {
        //1.构建一个File实例
        //file究竟是文件的实例还是文件的实例, 看传入的path
        File file = new File(path);
        //2. 判断file是否存在
        if(file.exists()){
            System.out.println(file + "文件已存在了");
            return;
        }
        try {
            //3. 创建文件的方法
            if(file.createNewFile()){
                //1. 文件名
                System.out.println("文件名: " + file.getName());
                //2. 绝对路径
                System.out.println("绝对路径: " + file.getAbsolutePath());
                //3. 获取的是构造中传入的路径
                System.out.println("路径: " + file.getPath());
                //获取file的父目录[相对路径 - 构造]
                System.out.println("父目录: " + file.getParent());
                System.out.println("toString(): " + file);
            }
            else
            {
                //没有权限
                System.out.println(file + "创建失败!!");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    //删除文件或者文件夹
    public static void deleteFileOrFile(String path){
        //1. 构建一个file实列
        File file = new File(path);

        //2. 判断file是否存在
        if(!file.exists()){
            System.out.println(file + "不存在!");
            return;
        }

        //3-1. 直接删除文件
        //如果是空目录也是可以直接被删除的
        //如果是非空目录, 则删除失败
        if(file.delete()){
            System.out.println(file + "删除成功");
        }else {
            System.out.println(file + "文件删除失败!");
        }
    }

    //创建目录
    public static void createFolder(String path){
        File file = new File(path);

        if(file.exists()){
            System.out.println(file + "文件夹已存在");
            return;
        }

        //创建单个目录
//        if(file.mkdir())

        //创建单个或多个目录
        if(file.mkdirs()){//推荐使用
            System.out.println(file + "目录城建成功!");
        }
        else
            System.out.println(file + "创建失败");
    }

    public static void lists(String path){
        File file = new File(path);
        if(!file.exists()){
            System.out.println(file + " 文件不存在");
            return;
        }
        //判断File是否为目录的实例
        if(!file.isDirectory()){
            System.out.println(file + " 不是一个文件夹");
            return;
        }

        //使用list方法时 返回的是文件或文件夹名称
        String[] infos = file.list();
        if(null != infos && infos.length > 0){
            for (String info : infos) {
                System.out.println(info);
            }
        }

        //使用listFiles方法返回的是绝对目录
        File[] files = file.listFiles();

        if(null !=files && files.length > 0){
            for (File f : files) {
                if(f.isDirectory()){
                    System.out.println(f.getAbsoluteFile());
                }
                else if(f.isFile()){
                    System.out.println(f.getName());
                }
            }
        }
    }

    //指定文件的后缀 - 找出
    public static void listsFilter(String path){
        File file = new File(path);

        if(!file.exists()){
            System.out.println(file + " 不存在!");
            return;
        }

        //判断File是否为目录的实列
        if(!file.isDirectory()){
            System.out.println(file + " 不是目录");
            return;
        }

        //传入的"13" 作为需要截取判断是否有13结尾的文件
        File[] files = file.listFiles(new SuffixFilenameFilter("13"));

        for (File f : files) {
            System.out.println(f);
        }
    }
}